package cn.tedu.charging.cost.pojo;

import lombok.AccessLevel;
import lombok.Data;
import lombok.experimental.FieldDefaults;

import java.math.BigDecimal;

/**
 * 充电数据
 */
@Data
@FieldDefaults(level = AccessLevel.PRIVATE)
public class ChargingData {

    /**
     * 订单号
     */
    String orderNo;

    /**
     * 总花费
     */
    BigDecimal totalFee;


    /**
     * 保存总花费
     * 如果是第一次 直接 赋值 本次花费 设置 为总花费
     * 如果不是第一次 计算 上次的花费  +  本次花费
     *
     * @param totalFee
     */
    public void setTotalFee(BigDecimal totalFee) {
        //判断是否是第一次
        if (isFirst()) {
            //直接赋值 本次花费 设置为 总花费
            this.totalFee = totalFee;
        }else {
            // 本次花费 + 上次花费 设置为 总花费
            this.totalFee = this.totalFee.add(totalFee);
        }
    }


    /**
     * 充电度数
     */
    Float chargingCapacity;

    /**
     * 获取充电度数
     * 如果是第一次 直接返回 设备同步的充电度数
     * 如果不是第一次 计算 设备同步的充电度数 - 上次充电度数
     * @param chargingCapacity 设备同步的充电度数
     * @return
     */
    public Float getChargingCapacity(Float chargingCapacity) {
        //判断是否是第一次
        if (isFirst()) {
            //直接返回 设备同步的充电度数
            return chargingCapacity;
        }else {
            //设备同步的充电度数 - 上次充电度数
            return chargingCapacity - this.chargingCapacity;
        }
    }

    /**
     * 次数
     */
    Integer count;

    /**
     * 判断是否是第一次
     * 业务的逻辑 从 业务层Service 移动到了Pojo 数据层
     * @return
     */
    public Boolean isFirst() {
        return count == 1;
    }


}
